home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / asm_reference / mc68kfaq.txt < prev    next >
Text File  |  1995-09-01  |  26KB  |  649 lines

  1.  
  2.  
  3.  
  4.                           comp.sys.m68k FAQ List
  5.  
  6.  
  7.     This is the frequently asked questions list (FAQ) for comp.sys.m68k.
  8.     It is posted on a periodic basis to comp.sys.m68k.  This list is
  9.     maintained by gregh@cserver.plexus.com (Greg Hawley).
  10.  
  11.     Errors, corrections, comments are encouraged.  Please send them to
  12.     Greg Hawley at the email address listed above.  When vendor names
  13.     or products are listed, it is not a recommendation of one vendor
  14.     over another.  If you have a product that fits in one of the lists,
  15.     feel free to contact the maintainer with information about the
  16.     product.
  17.  
  18.     While a good faith effort has been made to cite from where 
  19.     information has come, some of this document may not have properly 
  20.     be attributed to its source.  Corrections should be sent to the
  21.     maintainer.
  22.  
  23.  
  24.     Revision History:
  25.  
  26.         1.0  15FEB93  Original Release
  27.     1.1  28FEB93  Intel Hex ASCII section added, Motorola BBS # 
  28.                corrected, Some information added to Getting 
  29.               Started Building Hardware, Location of SIMTEL
  30.               cross-assembler/simulator added.
  31.     1.1.1 08MAR93 Updated reference to Dr. Dobbs book.
  32.         $Id: FAQ,v 1.3 1993/04/05 13:52:26 gregh Exp gregh $
  33.  
  34.  
  35.     [Index]
  36.  
  37.     The following topics are covered by this FAQ.
  38.  
  39.         Cross Assemblers
  40.         C Cross Compilers
  41.         Monitors/Debuggers
  42.             Data Sheets/Literature
  43.         Samples
  44.         Motorola BBS Access
  45.         Getting Started Building Hardware
  46.         Real-time Operating Systems
  47.         S-Record Format
  48.             Intel Hex ASCII Format
  49.         Contributors
  50.  
  51.     [Cross Assemblers]
  52.  
  53.     Several cross assemblers are available for Motorola 680x0
  54.     processors.  Any experience that you wish to share with
  55.     the group about any of these products would be much 
  56.     appreciated.
  57.  
  58.         o   a68k in source from to go with HCC see *C Cross 
  59.         Compilers* is available from the Fred Fish Amiga 
  60.         disk collection.
  61.         
  62.         o   Another version of a68k in PC executable and in
  63.         source form? is available from the Motorola BBS.
  64.  
  65.         o   The GNU assembler GAS to go with GCC is available
  66.         from GNU sites.  See *C Cross Compilers*.
  67.  
  68.             o   A simulator/assembler for the IBM-PC compatibles on
  69.                 Simtel.  The file is <msdos.crossasm>68asmsim.zip.
  70.                 The file description says "68000 cross-assembler/
  71.                 simulator with C source"  See archive (location): 
  72.         swdsrv.edvz.univie.ac.at
  73.         (/pc/dos/crossasm/68asmsim.zip), plaza.aarnet.edu.au
  74.         (/micros/pc/oak/crossasm/68asmsim.zip), nic.switch.ch
  75.         (/mirror/msdos/crossasm/68asmsim.zip) 
  76.         (/software/pc/simtel20/crossasm/68asmsim.zip),
  77.         sun0.urz.uni-heidelberg.de 
  78.         (/pub/msdos/simtel/crossasm/68asmsim.zip), 
  79.         barnacle.erc.clarkson.edu
  80.         (/pub/simtel20-cdrom/msdos/crossasm/68asmsim.zip),
  81.         rigel.acs.oakland.edu (/pub/msdos/crossasm/68asmsim.zip),
  82.         wuarchive.wustl.edu (/mirrors/msdos/crossasm/68asmsim.zip),
  83.         isfs.kuis.kyoto-u.ac.jp
  84.         (/mirrors/simtel20.msdos/crossasm/68asmsim.zip),
  85.         ftp.uu.net
  86.         (/systems/ibmpc/msdos/simtel20/crossasm/68asmsim.zip),
  87.         gdr.bath.ac.uk (/simtel-cdrom/msdos/crossasm/68asmsim.zip),
  88.         src.doc.ic.ac.uk
  89.         (/computing/systems/ibmpc/wsmr-simtel20.army.mil/
  90.           crossasm/68asmsim.zip)
  91.  
  92.  
  93.     [C Cross Compilers]
  94.  
  95.     Several cross compilers are available for Motorola 680x0
  96.     processors.  Below is a list of currently know C cross
  97.     compilers.  Any comments from readers about the reliability/
  98.     portability/pricing/availability is appreciated.  What are
  99.     people using?
  100.  
  101.         o   Microtec Research has tools available for Suns, 
  102.         Ultrix/VMS, PC and possibly others.  Their address
  103.         is 2350 Mission College Blvd., Santa Clara CA 95054.
  104.         Phone 408-980-1300, 800-950-5554.  Fax 408-982-8266.
  105.  
  106.         o   Archemedes has unknown availablility.
  107.  
  108.         o   GNU C 2.2.2 is available in source from GNU 
  109.         anonymous FTP sites.  Some effort has gone into
  110.         porting this code to the PC.  The PC port is
  111.         called djgpp and is for 386 or better machines
  112.         running DOS.  The source is free and available
  113.         at prep.ai.mit.edu
  114.  
  115.         o   HCC available for the Amiga in the Fred Fish Amiga
  116.         disk collections.  Fred Fish Amiga disk collection
  117.         is archived on ux1.cso.uiuc.edu.  These archives
  118.         are in lhz format.  The source for the utility to
  119.         uncompress these archives is called lharc.  Lharc
  120.         is available on comp.sources.misc archives in
  121.         volume 11.  Try wuarchive.wustl.edu for a comp.
  122.         sources.misc archive.
  123.     
  124.         o   A freeware C compiler is available on the Motorola
  125.         BBS.  There is certainly a PC executable available.
  126.         Source code, as well as executables for other
  127.         platforms may be in the BBS.
  128.  
  129.     A good comparison of supported, commercial Motorola C Cross 
  130.     Compilers appeared in _Computer Design_ in January 1993 pages
  131.     103-109.  Vendors listed in this article were: 2500AD Software,
  132.     Buena Vista CO; Avocet Systems, Rockport ME; BSO/Tasking, Dedham
  133.     MA; Cygnus Support, Mountain View CA; Diab Data, Foster City CA;
  134.     Intermetrics Microsystems Software, Cambridge MA; Introl, 
  135.     Milwaukee WI; Lattice, Downers Grove IL; Microtec Systems, 
  136.     Santa Clara CA; Microware Systems, Des Moines IA; Oasys,
  137.     Lexington MA; Production Languages Corp (PLC), Weatherford TX;
  138.     Sierra Systems, Oakland CA; Software Development Systems
  139.     Oak Brook IL; UniPress Software, Edison NJ.  
  140.  
  141.     Another company that apparently sells 68k based assemblers,
  142.     cross-compilers and debuggers is Intermeterics Microsystems
  143.     Software, Inc. 733 Concord Ave., Cambridge MA 02138.
  144.  
  145.  
  146.     [Monitors/Debuggers]
  147.     
  148.     One monitor available is fbug.  It is on the Motorola BBS.
  149.     The author is currently compiling and assembling it.  It
  150.     is an unsupported piece of code written by Motorola
  151.     engineers in Austin.
  152.  
  153.  
  154.     [Data Sheets/Literature]
  155.  
  156.     Data sheets can be found by calling your local Motorola
  157.     Sales Office or Distributor.  Local Sales Offices and
  158.     Distributors are listed in the back of any Motorola Master
  159.     Selection Guide.  If you can not find a local 
  160.     representative, Motorola Literature Distributions Center
  161.     addresses are listed by continent/region.
  162.  
  163.         USA
  164.         Motorola Literature Distribution, P.O. Box 20912,
  165.         Phoenix AZ 85036
  166.  
  167.         EUROPE
  168.         Motorola Ltd., European Literature Center, 88 Tanners Drive,
  169.         Blakelands, Milton Keynes, MK14 5BP England
  170.  
  171.         JAPAN
  172.         Nippon Motorola Ltd., 4-32-1 Nishi-Gotanda, Shinagawa-ku,
  173.         Tokyo 141 Japan
  174.  
  175.         ASIA-PACIFIC
  176.         Motorola Semiconductors H.K. Ltd., Silicon Harbour Center,
  177.         No. 2 Dai King Street, Tai Po Industrial Estate,
  178.         Tai Po, N.T.,  Hong Kong
  179.  
  180.     Ask for application notes, too.  A list with Motorola document
  181.     numbers follows is found in Motorola Document BR321/D.  This list
  182.     includes about 100 different documents.  The author would have
  183.     typed them in, but he was short of time and space.
  184.  
  185.     Programmers guide is available that describes the instructions
  186.     sets of all of the 68000-based microprocessors.  
  187.  
  188.  
  189.     [Samples]
  190.  
  191.     For Microcomputer products try 800-845-MOTO. That is the number
  192.     for the sales division that samples microcomputers (up to 
  193.     and including the 68EC040 and 68340).
  194.  
  195.  
  196.     [Motorola BBS]
  197.  
  198.     The Motorola BBS number is 512-891-FREE or 512-891-3733.  
  199.     This is a new number perhaps less than a couple of years old.  
  200.     The old number for the BBS was 512-440-2725.  This number may 
  201.     still work, but is not recommended. Connection to the BBS is 
  202.     1200 or 2400? baud 8-N-1. For those with Internet access, 
  203.     this bulletin board is mirrored on several internet 
  204.     anonymous FTP sites:
  205.  
  206.         bode.ee.ualberta.ca
  207.         calvin.stanford.edu
  208.         ee.utal.edu
  209.         red.cs.tcu.edu
  210.         ernie.uvic.ca (login as ftp)
  211.  
  212.     The location of the Motorola BBS information inside these
  213.     BBSs are unknown.  You'll have to dig around to find them.
  214.     The site ernie.uvic.ca seems to be sanctioned by the 
  215.     Motorola BBS.
  216.  
  217.     In general, if you are looking for something on the network,
  218.     you can use any of a number of anonymous ftp database servers.
  219.     One of these servers is quiche.cs.mcgill.  Telnet to this
  220.     machine and login as archie.  From there the directions are
  221.     self-explanatory.
  222.  
  223.     An anonymous ftp archive is currently being sought.  Any 
  224.     parties interested in helping set one up should contact
  225.     gregh@cserver.plexus.com (Greg Hawley).
  226.  
  227.  
  228.     [Getting Started Building Hardware]
  229.  
  230.     A percentage of the articles on comp.sys.m68k relate to
  231.     building your own hardware based on 68xxx processors.  People
  232.     seem interested in building their own hardware or modifying
  233.     what others have already built.  Because this is such a pop-
  234.     ular topic, no frequently asked questions list for comp.sys.
  235.     m68k would be complete without some mention of hardware hacking.
  236.     The author is in the middle of building his own 68010 box
  237.     at the writing of this FAQ.
  238.  
  239.         Choosing the Micro
  240.  
  241.     One of the first decisions to be made is which processor is
  242.     to be used.  Everything else falls around the choice of processors,
  243.     so this isn't as trivial a issue as it might appear.  By the time
  244.     you have come to read this FAQ, you probably have joined the
  245.     Motorola 68xxx camp. Several criteria are important in the 
  246.     decision of which processor to use.  They are listed below.
  247.  
  248.         Criteria used to Choose a Microprocessor
  249.  
  250.         o  Availability.  Where can the micro of your choice be
  251.            bought.
  252.  
  253.         o  Cost.  Can your budget afford it.  When I get a
  254.            chance I'll post what the Motorola Price List says.
  255.            Anybody have any recommendations for sources?
  256.     
  257.         o  Package.  If you don't have surface mount equipment
  258.            in your basement, you should look for a Plastic 
  259.            Leadless Chip Carrier (PLCC), Dual In-line Package 
  260.            (DIP) or Pin Grid Array (PGA) package for the micro.  
  261.            Motorola lists part numbers that include the package 
  262.            type:
  263.  
  264.                MC68010L8
  265.                \/\___/||
  266.                |   |  |+--- Speed (in MHz)
  267.                         |   |  +---- Package Type
  268.                         |   |          L  - Ceramic DIP
  269.                         |   |          LC - Ceramic DIP, Gold Lead Finish
  270.                         |   |          P  - Plastic DIP
  271.                         |   |          RC - Pin Grid Array, Gold Lead Finish
  272.                         |   |          RL - Pin Grid Array, Solder Lead Finish
  273.                         |   |          R  - Pin Grid Array, Solder Lead Finish
  274.                         |   |          RP - Plastic Pin Grid Array
  275.                         |   |          FN - Plastic Quad Pack (PLCC)
  276.                         |   |           FG - Plastic Quad Plat Pack (PQFP)
  277.                         |   |           FE - Ceramic Quad (Gull Wing)
  278.                         |   |          FC - Plastic Quad (Gull Wing)
  279.                         |   |
  280.                         |   +------- Part Number
  281.                         +----------- Motorola Prefix
  282.  
  283.         o  On-Chip Peripherals.  Many microprocessors have lots
  284.            of on-chip stuff.  Commonly available modules include
  285.            UARTS, Timers, Chip-select generation circuitry, 
  286.            Interrupt handling circuitry, etc.  Don't immediately
  287.            write this more expensive microprocessors with on
  288.            chip stuff.  Many of the these functions are tricky
  289.            to implement in discrete or programmable logic.  The
  290.            extra cost of having all of this extra functionality 
  291.            many be well worth your application.
  292.  
  293.         o  Manufacturer.  Don't forget.  Motorola is not the only
  294.            company to make 68xxx processors.  At least one other
  295.            company (and maybe others) make processors with 68xxx
  296.            cores.  Check Toshiba for information on there products.
  297.           
  298.     In general, the 683xx series of embedded microcontrollers,
  299.     especially the 68340 are well suited for hardware hacking.
  300.     Byron@cc.gatech.edu (Byron A. Jeff) outlines the features of the 
  301.         68340:
  302.  
  303.         o  16 bit data bus.  32 bit address bus.
  304.         o  Quad Flat Pack (QFP) or Pin Grid Array (PGA) package.
  305.         o  HCMOS process with 90 mA load (60 uA in LPSTOP mode).
  306.         o  2 high speed serial ports.
  307.         o  2 general purpose timers.
  308.         o  2 DMA channels -- max data rate of 33 Mbytes/sec.
  309.         o  watchdog and interval timers.
  310.         o  2 eight bit parallel ports.
  311.         o  integrated IRQ, IACK and chip select circuitry.
  312.         o  On-board reset circuitry.
  313.         o  16 MHz version available. 25 MHz version planned.
  314.         o  Background Debugging Mode.
  315.  
  316.     The background debugging mode for the 68340 can be accessed
  317.     from a free debugger that runs on IBM-PC compatibles.  The
  318.     debugger is available somewhere in the Motorola Freeware
  319.     BBS.
  320.  
  321.     The pricing guide for Motorola entitled Motorola Semiconductor
  322.     Price List with effective date January 9, 1993 (Motorola part
  323.     number 22480-18) lists "No new designs" for the 68010.  It is
  324.     unclear what the future of this part is.  Be ware.
  325.  
  326.     Initial Design
  327.  
  328.     The best first step in designing your computer is reading the
  329.     application notes.
  330.  
  331.     Glue logic
  332.  
  333.     For hardware hacking perhaps the best discrete logic family to
  334.     use is HC.  It doesn't use a lot of power and can be purchased
  335.     from just about anywhere.  7400, LS, ALS and other bipolar
  336.     families require higher currents.  The bipolars, however, are
  337.     faster.  Typically from a HC gate the propagation delay is
  338.     around 20 ns.  The fast bipolars can run in the 2-3 ns range.
  339.  
  340.     Don't rule out using PLDs.  While it is valuable experience to
  341.     build you're whole computer out of discrete logic, if you have
  342.     access to equipment to blow PLDs, use it.  PLDs keeps your board
  343.     smaller, reworks easier, and the final product more reliable.
  344.  
  345.     Choosing Other Parts 
  346.  
  347.     DRAM controllers are available from National Semiconductors.
  348.     A DRAM Management Handbook from National explains in an
  349.     application note how to interface their controllers to 
  350.     68000, 68010, 68020 and others.
  351.  
  352.     Procuring Parts
  353.  
  354.     Section under construction.
  355.  
  356.     Software Development Package
  357.  
  358.     Section under construction.
  359.     
  360.  
  361.     [Real-time Operating Systems]
  362.  
  363.     A freeware real-time operating system called uCOS was published 
  364.     in _Embedded Systems Programming_ in May and June 1992.
  365.     _Embedded Systems Programming_ is a Miller Freeman
  366.     Publication and can be reached at:
  367.  
  368.         Miller Freeman Inc.
  369.         600 Harrison St.
  370.         San Francisco CA 94107
  371.         (415) 905-2200
  372.  
  373.         In general _Embedded Systems Programming_ is a good magazine
  374.         for users interested in developing embedded systems.  The 
  375.         magazine covers a lot of things that are relevant to programmers
  376.         working with hardware on a more intimate level.
  377.  
  378.         Real-time operating systems are also available from numerous
  379.     vendors.
  380.  
  381.     A book published by the publishers of Dr. Dobbs contains source 
  382.     code for a real-time operating system.  This book contains a 
  383.     cross-assembler in FORTH, a BASIC interpreter and a bunch of 
  384.     other goodies.  The reference is: _Dr. Dobbs Toolbox of 68000
  385.     Programming_, ISBN 0-13-216557-0.  Unfortunately, this book is
  386.     out of print.  Does anyone have other appropriate references?
  387.  
  388.  
  389.     [S-Record Format]
  390.  
  391.         Chaplin@keinstr.uucp (Roger Chaplin) reposted an article written
  392.     by mcdchg!motmpl!ron (Ron Widell) that explained how Motorola
  393.     S-Records are formatted.  This comes from a unix man page.  No
  394.         mention of which version of Unix is specified.  This section
  395.     of the FAQ is a bit long.  An anonymous ftp archive is currently
  396.     being sought.  When one is found, the section will be placed in
  397.     the archive.
  398.  
  399.         SREC(4)                UNIX 5.0 (03/21/84)                SREC(4)
  400.  
  401.  
  402.         An S-record file consists of a sequence of specially formatted
  403.     ASCII character strings.  An S-record will be less than or equal to
  404.     78 bytes in length.
  405.  
  406.         The order of S-records within a file is of no significance and no 
  407.     particular order may be assumed.
  408.  
  409.         The general format of an S-record follow:
  410.  
  411.         +------------------//-------------------//-----------------------+
  412.         | type | count | address  |            data           | checksum |
  413.         +------------------//-------------------//-----------------------+
  414.  
  415.           type      A char[2] field.  These characters describe the
  416.                     type of record (S0, S1, S2, S3, S5, S7, S8, or
  417.                     S9).
  418.           count     A char[2] field.  These characters when paired and
  419.                     interpreted as a hexadecimal value, display the
  420.                     count of remaining character pairs in the record.
  421.  
  422.           address   A char[4,6, or 8] field.  These characters grouped
  423.                     and interpreted as a hexadecimal value, display
  424.                     the address at which the data field is to be
  425.                     loaded into memory.  The length of the field
  426.                     depends on the number of bytes necessary to hold
  427.                     the address.  A 2-byte address uses 4 characters,
  428.                     a 3-byte address uses 6 characters, and a 4-byte
  429.                     address uses 8 characters.
  430.           data      A char [0-64] field.  These characters when paired
  431.                     and interpreted as hexadecimal values represent
  432.                     the memory loadable data or descriptive
  433.                     information.
  434.  
  435.           checksum  A char[2] field.  These characters when paired and
  436.                     interpreted as a hexadecimal value display the
  437.                     least significant byte of the ones complement of
  438.                     the sum of the byte values represented by the
  439.                     pairs of characters making up the count, the
  440.                     address, and the data fields.
  441.  
  442.           Each record is terminated with a line feed.  If any
  443.           additional or different record terminator(s) or delay
  444.           characters are needed during transmission to the target
  445.           system it is the responsibility of the transmitting program
  446.           to provide them.
  447.  
  448.           S0 Record  The type of record is 'S0' (0x5330).  The address
  449.  
  450.  
  451.                      field is unused and will be filled with zeros
  452.                      (0x0000).  The header information within the data
  453.                      field is divided into the following subfields.
  454.  
  455.                                   mname      is char[20] and is the
  456.                                              module name.
  457.                                   ver        is char[2] and is the
  458.                                              version number.
  459.  
  460.                                   rev        is char[2] and is the
  461.                                              revision number.
  462.                                   description is char[0-36] and is a
  463.                                              text comment.
  464.  
  465.                      Each of the subfields is composed of ASCII bytes
  466.                      whose associated characters, when paired,
  467.                      represent one byte hexadecimal values in the case
  468.                      of the version and revision numbers, or represent
  469.                      the hexadecimal values of the ASCII characters
  470.                      comprising the module name and description.
  471.  
  472.           S1 Record  The type of record field is 'S1' (0x5331).  The
  473.                      address field is interpreted as a 2-byte address.
  474.                      The data field is composed of memory loadable
  475.                      data.
  476.           S2 Record  The type of record field is 'S2' (0x5332).  The
  477.                      address field is interpreted as a 3-byte address.
  478.                      The data field is composed of memory loadable
  479.                      data.
  480.  
  481.           S3 Record  The type of record field is 'S3' (0x5333).  The
  482.                      address field is interpreted as a 4-byte address.
  483.                      The data field is composed of memory loadable
  484.                      data.
  485.           S5 Record  The type of record field is 'S5' (0x5335).  The
  486.                      address field is interpreted as a 2-byte value
  487.                      and contains the count of S1, S2, and S3 records
  488.                      previously transmitted.  There is no data field.
  489.  
  490.           S7 Record  The type of record field is 'S7' (0x5337).  The
  491.                      address field contains the starting execution
  492.                      address and is interpreted as  4-byte address.
  493.                      There is no data field.
  494.           S8 Record  The type of record field is 'S8' (0x5338).  The
  495.                      address field contains the starting execution
  496.                      address and is interpreted as  3-byte address.
  497.                      There is no data field.
  498.  
  499.           S9 Record  The type of record field is 'S9' (0x5339).  The
  500.                      address field contains the starting execution
  501.                      address and is interpreted as  2-byte address.
  502.                      There is no data field.
  503.  
  504.      EXAMPLE
  505.  
  506.           Shown below is a typical S-record format file.
  507.  
  508.                  S00600004844521B
  509.                  S1130000285F245F2212226A000424290008237C2A
  510.                  S11300100002000800082629001853812341001813
  511.                  S113002041E900084E42234300182342000824A952
  512.                  S107003000144ED492
  513.                  S5030004F8
  514.                  S9030000FC
  515.  
  516.           The file consists of one S0 record, four S1 records, one S5
  517.           record and an S9 record.
  518.  
  519.           The S0 record is comprised as follows:
  520.  
  521.              S0     S-record type S0, indicating it is a header
  522.                     record.
  523.              06     Hexadecimal 06 (decimal 6), indicating that six
  524.                     character pairs (or ASCII bytes) follow.
  525.  
  526.              00 00  Four character 2-byte address field, zeroes in
  527.                     this example.
  528.              48     ASCII H, D, and R - "HDR".
  529.  
  530.              1B     The checksum.
  531.  
  532.           The first S1 record is comprised as follows:
  533.              S1     S-record type S1, indicating it is a data record
  534.                     to be loaded at a 2-byte address.
  535.  
  536.              13     Hexadecimal 13 (decimal 19), indicating that
  537.                     nineteen character pairs, representing a 2 byte
  538.                     address, 16 bytes of binary data, and a 1 byte
  539.                     checksum, follow.
  540.              00 00  Four character 2-byte address field; hexidecimal
  541.                     address 0x0000, where the data which follows is to
  542.                     be loaded.
  543.  
  544.              28 5F 24 5F 22 12 22 6A 00 04 24 29 00 08 23 7C Sixteen
  545.                     character pairs representing the actual binary
  546.                     data.
  547.              2A     The checksum.
  548.  
  549.           The second and third S1 records each contain 0x13 (19)
  550.           character pairs and are ended with checksums of 13 and 52,
  551.           respectively.  The fourth S1 record contains 07 character
  552.           pairs and has a checksum of 92.
  553.  
  554.           The S5 record is comprised as follows:
  555.  
  556.              S5     S-record type S5, indicating it is a count record
  557.                     indicating the number of S1 records.
  558.  
  559.  
  560.  
  561.              03     Hexadecimal 03 (decimal 3), indicating that three
  562.                     character pairs follow.
  563.  
  564.              00 04  Hexadecimal 0004 (decimal 4), indicating that
  565.                     there are four data records previous to this
  566.                     record.
  567.              F8     The checksum.
  568.  
  569.           The S9 record is comprised as follows:
  570.  
  571.              S9     S-record type S9, indicating it is a termination
  572.                     record.
  573.              03     Hexadecimal 03 (decimal 3), indicating that three
  574.                     character pairs follow.
  575.  
  576.              00 00  The address field, hexadecimal 0 (decimal 0)
  577.                     indicating the starting execution address.
  578.              FC     The checksum.
  579.  
  580.  
  581.     [Intel Hex ASCII Format]
  582.  
  583.     Intel HEX-ASCII format takes the form:
  584.  
  585.             +----------------------------------- Start Character
  586.             |
  587.             |  +-------------------------------- Byte Count 
  588.             |  |                                     (# of data bytes)
  589.             |  | 
  590.             |  |     +-------------------------- Address of first data.
  591.             |  |     |     
  592.             |  |     |     +-------------------- Record Type (00 data,
  593.             |  |     |     |                         01 end of record)
  594.             |  |     |     |
  595.             |  |     |     |       +------------ Data Bytes
  596.             |  |     |     |       |        
  597.             |  |     |     |       |       +---- Checksum
  598.             |  |     |     |       |       |
  599.         | / \ /     \ / \ /         \ / \
  600.         : B C A A A A T T H H ... H H C C
  601.  
  602.     An examples:
  603.  
  604.         :10000000DB00E60F5F1600211100197ED300C3004C
  605.         :1000100000000101030307070F0F1F1F3F3F7F7FF2
  606.         :01002000FFE0
  607.         :00000001FF
  608.  
  609.     This information comes from _Microprocessors and Programmed
  610.     Logic_, Second Edition, Kenneth L. Short, 1987, Prentice-Hall, 
  611.     ISBN 0-13-580606-2. 
  612.  
  613.     Provisions have been made for data spaces larger than 64 kBytes.
  614.     The above reference does not discuss them.  I suspect there is
  615.     a start of segment type record, but I do not know how it is
  616.     implemented.
  617.  
  618.  
  619.     [Contributors]
  620.  
  621.         Many people have contributed to this list.  Below is a list
  622.         of people who have helped by either their direct input or through
  623.     their postings to comp.sys.m68k.  I can't list everyone, but I 
  624.     have tried to include many.  
  625.  
  626.         walvdrk_r@research.ptt.nl (Kees van der Wal)
  627.         byron@cc.gatech.edu (Byron A Jeff)
  628.             mcdchg!motmpl!ron (Ron Widell)
  629.         rrt@mpd.tandem.com (Bob Teisberg)
  630.         benstn@olivetti.nl (Ben Stuyts)
  631.         csuley@cs.cornell.edu (Christopher Suley)
  632.         idr@mailhost.cs.pdx.edu (Ian D Romanick)
  633.         wayne@netcom.com (wayne t. watson)
  634.  
  635.  
  636.  
  637. Happy Computing,
  638. -- Greg
  639. +---------------------------+----------------------------+-----------------+
  640. |  __     __          ___   |  Greg Hawley               |  Expressed      |
  641. | /  \|  /   \ / |  | \     |  Technology Group Inc.     |  Opinions are   |
  642. | +--/|  +--  X  |  |  \    |  55 Jewelers Park Drive    |  mine and not   |
  643. | |   \__\__ / \ \__/ __\   |  Neenah WI 54956           |  of Technology  |
  644. |                           |  gregh@cserver.plexus.com  |  Group Inc. or  |
  645. |  Technology Group Inc.    |                            |  Plexus Corp.   |
  646. +---------------------------+----------------------------+-----------------+
  647.  
  648.  
  649.